namespace EveIntel.API.Interfaces
{
    using System;
    using Enums;

    /// <summary>
    /// Data provider interface contract
    /// </summary>
    public interface IIntelProvider
    {
        /// <summary>
        /// Obtains a data provider description
        /// </summary>
        string Description { get; }
        /// <summary>
        /// Determines if the data provider can handle a type of intel request
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        bool CanProvideIntel(IntelTypeEnum type);
        /// <summary>
        /// Obtains the URI to navigate to
        /// </summary>
        /// <param name="type">The IntelTypeEnum value</param>
        /// <param name="args">Additional arguments needed to build the uri</param>
        /// <returns></returns>
        Uri GetUri(IntelTypeEnum type, string[] args);
        /// <summary>
        /// Obtains the provider unique id.
        /// </summary>
        Guid UniqueId { get; }
    }
}